MySQL 總是被 OOM killer 砍了? |
2017/02/18 ~ 阿亮 ~ |
最近主機升為 Ubuntu16, 發現 mysql 一直被 OOM killer 砍掉,經過許久的測試才終於調出不被砍的 mysqld 設定。
簡單結論就是:不要傻傻地依 mysqltuner 建議拉高設定給 mysqld (ex. innodb_buffer_pool_size),雖然看起來 RAM 很夠給用,OOM killer 不知為何,我覺得 OOM killer 似乎沒考慮 buff/cache/swap 的量,只考慮 free 的樣子… 只要 free 持續在低量,mysqld 就會被砍了… 降低這些設定就能減少被砍的機率。
我另外有參考這篇的做法 ,觀注 RAM free 的大小,只要它小於 1.5G 時,就 trigger OS 將 cache 釋出.. PHP script 做法如下 (需要在 root 下執行)
$qFree = intval(shell_exec(“free -m|head -n2|tail -n1|awk ‘{print $4}'”));
if ($qFree<1500)
{
system(“echo 3 > /proc/sys/vm/drop_caches”);
}